///**
// * All rights reserved by DigitNexus Technology INC.
// */
//package com.xspace.android.xafcommon.download;
//
//import com.xspace.android.xafcommon.download.IDownCallback;
//import com.xspace.android.xafcommon.download.IDownload;
//import com.xspace.android.xafcommon.util.LogUtils;
//
//import android.content.ComponentName;
//import android.content.Context;
//import android.content.Intent;
//import android.content.ServiceConnection;
//import android.os.IBinder;
//import android.os.RemoteException;
//
//public class DownloadServiceManager {
//    private static DownloadServiceManager instance = null;
//    private ServiceRemoteConnection remoteConn = null;
//    private final Context context;
//    private  String serviceName;
//
//    public static DownloadServiceManager getInstance(Context context,String serviceName) {
//        if (null == instance) {
//            instance = new DownloadServiceManager(context,serviceName);
//        }
//        return instance;
//    }
//
//    private DownloadServiceManager(Context context,String serviceName) {
//        this.context = context;
//        this.serviceName = serviceName;
//        remoteConn = new ServiceRemoteConnection();
//        remoteConn.initRemoteConnection();
//    }
//
//    public void downLoad(DownloadInfo downloads,String id,String serviceName,boolean type,IDownloadListener listener,IDownloadImgListener imgListener)throws RemoteException {
//       LogUtils.d("service == null?"+(remoteConn.downloadService ==null));
//        remoteConn.downloadService.downMap(downloads,id,serviceName, type, new TransportCallback(listener,imgListener));
//
//    }
//
//	public void cancel(String id)throws RemoteException {
//		if(remoteConn == null || remoteConn.downloadService==null)
//			return;
//		remoteConn.downloadService.cancel(id);
//	}
//
//	public void resume(String id)throws RemoteException{
//		remoteConn.downloadService.resume(id);
//	}
//
//	public void pause(String id)throws RemoteException{
//		remoteConn.downloadService.pause(id);
//	}
//
//	public synchronized void resetCallback(String id,IDownloadListener listener,IDownloadImgListener imgListener) throws RemoteException{
//		remoteConn.downloadService.resetCallback(id, new TransportCallback(listener,imgListener));
//	}
//
//	public int getStatus(String id) throws RemoteException{
//		return remoteConn.downloadService.getStatus(id);
//	}
//
//	public float getProgress(String id) throws RemoteException{
//		return remoteConn.downloadService.getProgress(id);
//	}
//
//	public long getDowned(String id) throws RemoteException{
//		return remoteConn.downloadService.getDowned(id);
//	}
//
//    public void unbindService() {
//        try {
//            if (null != remoteConn) {
//                remoteConn.releaseRemoteConnection();
//            }
//        } catch (IllegalArgumentException e) {
//           e.printStackTrace();
//        } finally {
//            remoteConn = null;
//        }
//
//        if (null != instance) {
//            instance = null;
//        }
//    }
//
//    private class TransportCallback extends IDownCallback.Stub {
//    	private IDownloadListener mListener;
//    	private IDownloadImgListener mImgListener;
//    	public TransportCallback(IDownloadListener listener,IDownloadImgListener imgListener) {
//    		mListener = listener;
//    		mImgListener = imgListener;
//		}
//
//    	@Override
//    	public void onDownAllFinished(DownloadInfo downloads,boolean checkFlag) throws RemoteException {
//    		if(mListener!=null)
//    		mListener.onDownAllFinished(downloads,checkFlag);
//    	}
//    	@Override
//    	public void onCancelDown(DownloadInfo downloads,int current) throws RemoteException {
//    		if(mListener!=null)
//    		mListener.onCancelDown(downloads,current);
//    	}
//
//    	@Override
//    	public void onDownBefore(DownloadInfo downloads) throws RemoteException {
//    		if(mListener!=null)
//    		mListener.onDownBefore(downloads);
//    	}
//
//    	@Override
//    	public void onDownError(long downed, float progress,DownloadInfo downloads, int current)
//    			throws RemoteException {
//    		if(mListener!=null)
//    		mListener.onDownError(downed, progress, downloads,current);
//    	}
//
//    	@Override
//    	public void onDowning(long downed,long total, float progress,float speed,DownloadInfo downloads, int current)
//    			throws RemoteException {
//    		if(mListener!=null)
//    		mListener.onDowning(downed,total,progress,speed,downloads, current);
//    	}
//
//    	@Override
//    	public void onPauseDown(DownloadInfo downloads,int current) throws RemoteException {
//    		if(mListener!=null)
//    		mListener.onPauseDown(downloads,current);
//    	}
//
//    	@Override
//    	public void onResumeDown(DownloadInfo downloads,int current) throws RemoteException {
//    		if(mListener!=null)
//    		mListener.onResumeDown(downloads,current);
//    	}
//
//		@Override
//		public void onDownImgError(int current) throws RemoteException {
//			if(mImgListener!=null)
//			mImgListener.onDownImgError();
//
//		}
//
//		@Override
//		public void onDownImgFinished(DownloadInfo downloads)
//				throws RemoteException {
//			if(mImgListener!=null)
//			mImgListener.onDownImgFinished(downloads);
//
//		}
//    }
//
//    public boolean isBind(){
//    	return remoteConn.isBound;
//    }
//
//    private class ServiceRemoteConnection implements ServiceConnection {
//        private boolean isBound = false;
//
//        private IDownload downloadService = null;
//
//        @Override
//        public void onServiceConnected(ComponentName name, IBinder service) {
//			LogUtils.d("downloadService  onServiceConnected");
//            downloadService = IDownload.Stub.asInterface(service);
//        }
//
//        @Override
//        public void onServiceDisconnected(ComponentName name) {
//			LogUtils.d("downloadService  onServiceDisconnected");
//			downloadService = null;
//        }
//
//        public boolean initRemoteConnection() {
//			LogUtils.d("绑定下载 的服务结果》》》initRemoteConnection");
//            boolean ret = true;
//            if (!isBound) {
//                Intent i = new Intent(serviceName);
//                i.setPackage(context.getPackageName());
//				LogUtils.d("绑定下载 的服务");
//                if (!context.bindService(i, this, Context.BIND_AUTO_CREATE)) {
//					LogUtils.d("绑定下载 的服务结果》》》綁定失敗");
//                    isBound = ret = false;
//                } else {
//					LogUtils.d("绑定下载 的服务结果》》》綁定成功");
//                    isBound = ret = true;
//                }
//            }
//
//            return ret;
//        }
//
//        public void releaseRemoteConnection() {
//            if (isBound == true) {
//                context.unbindService(this);
//            }
//            isBound = false;
//        }
//    }
//}
